package Modelo;

public class TunelElectromagnetico implements Habilidad {
	private int longitud;
	
	public TunelElectromagnetico(){
		longitud= Constantes.longitudTunelElectromagnetico;
	}
	
	public void ejecutarSobre(PoseedorDeHabilidad ejecutor) {
		Mapa mapa=ejecutor.getMapa();
		Bloque bloqueFin= mapa.getBloqueNEnDireccionDesdeUbicacionDe(ejecutor,longitud,Constantes.arriba,longitud+1,ejecutor.getSentido());
		Bloque bloqueIni= mapa.getBloqueNEnDireccionDesdeUbicacionDe(ejecutor,1,ejecutor.getSentido());
		Portal entrada, salida;
		entrada= new Portal(mapa);
		salida= new Portal(mapa);
		entrada.setearPortalSalida(salida);
		salida.setearPortalSalida(entrada);
//		bloqueFin.destruir();
//		bloqueIni.destruir();
		bloqueFin= mapa.getBloqueNEnDireccionDesdeUbicacionDe(ejecutor,longitud,Constantes.arriba,longitud+1,ejecutor.getSentido());
		bloqueIni= mapa.getBloqueNEnDireccionDesdeUbicacionDe(ejecutor,1,ejecutor.getSentido());
		mapa.ModificarBloquePor(bloqueIni, entrada);
		mapa.ModificarBloquePor(bloqueFin, salida);	
		ejecutor.eliminarHabilidad(this);
	}

	public boolean esEjecutableSobre(PoseedorDeHabilidad ejecutor) {
		Bloque bloque;
		if(ejecutor.getSentidoVertical()!=Constantes.reposo)
			return false;
		try{
			bloque=ejecutor.getMapa().getBloqueNEnDireccionDesdeUbicacionDe(ejecutor,longitud,Constantes.arriba,longitud+1,ejecutor.getSentido());
		}
		catch(FueraDelMapaException e){
			return false;
		}
		return true;
	}

	public long tiempoDeEjecucion(PoseedorDeHabilidad ejecutor) {
		return Constantes.tiempoCiclo;
	}

	@Override
	public boolean seEjecuto() {
		// TODO Auto-generated method stub
		return false;
	}

}
